package com.dzl.userwx.dao;

import com.dzl.base.mapper.BaseMapper;
import com.dzl.userwx.pojo.WelfareUserWx;
import com.dzl.userwx.pojo.dto.UserWxIntegralDto;
import com.dzl.userwx.pojo.query.WelfareUserWxIdQuery;
import com.dzl.userwx.pojo.query.WelfareUserWxIntegralQuery;
import com.dzl.userwx.pojo.query.WelfareUserWxQuery;
import com.dzl.userwx.pojo.vo.UserWxIntegraDetaillVo;
import com.dzl.userwx.pojo.vo.WelfareUserOrganizationVo;
import com.dzl.userwx.pojo.vo.WelfareUserWxVo;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 小程序用户表(WelfareUserWx)表数据库访问层
 * @author ChenLong
 * @since 2021-05-14 15:50:19
 */
public interface WelfareUserWxMapper extends BaseMapper<WelfareUserWx> {

    /**
     * 修改支付密码
     * @author ChenLong
     * @since 2021-05-17 09:39:21
     * @param id 主键id
     * @param payPassword 支付密码
     * @return int
     **/
    Integer updatePayPassword(@Param("id") int id,@Param("payPassword") String payPassword);

    /**
     * 修改手机号
     * @author ChenLong
     * @since 2021-05-20 10:38:31
     * @param id 主键id
     * @param phoneNumber 手机号
     * @return int
     **/
    Integer updatePhoneNumber(@Param("id") int id,@Param("phoneNumber") String phoneNumber);

    /**
     * 服务端用户管理列表分页数据
     * @date 2021/5/18 11:02
     * @author caobucao
     * @param query 查询条件
     * @return com.dzl.util.PageUtils
     */
    List<WelfareUserWxVo> selectUserWxListPage(WelfareUserWxQuery query);

    /**
     * 通过ID查询用户详情
     * @date 2021/5/18 11:40
     * @author caobucao
     * @param userId 用户id
     * @return com.dzl.userwx.entity.vo.WelfareUserWxVo
     */
    WelfareUserWxVo selectUserWxVoById(@Param("userId") Integer userId);

    /**
     * 修改其他用户的openid置空
     * @author liuguanjun
     * @since 2021-09-07 13:59:21
     * @param id id 用户id
     * @param openid 微信openid
     * @return int
     **/
    Integer updateWxUserOpenid(@Param("id") Integer id,@Param("openid") String openid);

    /**
     * 更新用户积分数据
     * @date 2021/9/8 10:55
     * @author caobucao
     * @param userIdList 用户idList
     * @param integral 分发的积分数量
     * @return java.lang.Integer
     */
    Integer updateUserIntegral(@Param("userIdList") List<Integer> userIdList, @Param("integral") BigDecimal integral);

    /**
     * 查询成员积分管理数据
     * @date 2021/9/8 10:57
     * @author caobucao
     * @param query 查询条件
     * @return java.util.List<com.dzl.userwx.pojo.vo.WelfareUserWxIntegralVo>
     */
    List<WelfareUserOrganizationVo> selectUserWxIntegralPage(WelfareUserWxIntegralQuery query);

    /**
     * 精确查询成员
     * @date 2021/9/8 10:57
     * @author caobucao
     * @param query 查询条件
     * @return java.util.List<com.dzl.userwx.pojo.vo.WelfareUserWxIntegralVo>
     */
    List<WelfareUserOrganizationVo> selectOrganizationUser(WelfareUserWxIntegralQuery query);

    /**
     * 积分过期时扣除等额用户积分余额
     * @date 2021/9/9 17:37
     * @author caobucao
     * @param dto 数据传输类
     * @return java.lang.Integer
     */
    Integer updateIntegralForExpired(UserWxIntegralDto dto);

    /**
     * 获取用户积分使用明细
     * @author ChenLong
     * @date 2021-09-09 16:54:29
     * @param query 用户id查询对象
     * @return java.util.List<com.dzl.userwx.pojo.vo.UserWxIntegraDetaillVo>
     **/
    List<UserWxIntegraDetaillVo> getUserIntegralDetail(WelfareUserWxIdQuery query);
}

